package com.haojin.spring.aop.example;

/**
 * @author .29.
 * @create 2023-02-04 15:13
 */

//静态代理
public class CalculatorStaticProxy implements Calculator{
    //要将被代理的对象传递进来
    private Calculator calculator;

    //通过构造器传递进来
    public CalculatorStaticProxy(Calculator calculator){
        this.calculator = calculator;
    }

    //没有做到灵活性，日志都写死了，依旧需要重复写日志代码
    @Override
    public int add(int i, int j) {
        //输出日志
        System.out.println("[日志] add 方法开始了，参数是：" + i + "," + j);

        //调用目标对象方法，实现核心业务
        int addResult = calculator.add(i, j);

        //输出日志
        System.out.println("[日志] add 方法结束了，结果是：" + addResult);
        return addResult;
    }

    @Override
    public int sub(int i, int j) {
        return 0;
    }

    @Override
    public int mul(int i, int j) {
        return 0;
    }

    @Override
    public int div(int i, int j) {
        return 0;
    }
}
